The present invention relates to computer system management, and more specifically, to compiler-generated hints for mapping data to non-uniform memory domains of physical memory.
Computer systems often require a considerable amount of high speed memory, such as random access memory (RAM), to hold information, such as data and programs, when a computer is powered and operational. Computer memory and processing resources have continued to grow as computer systems have increased in performance and complexity. Computer systems that include multiple processing resources and regions of memory can further complicate efficient allocation and use of available resources.
In operation, a compiler in memory receives a program and compiles it to produce an application program as an executable module. The application program may include code that is placed into physical memory prior to or at runtime. The application program can create, access, and modify data structures in physical memory. The physical memory can include multiple non-uniform domains with different latency or bandwidth characteristics. The compiler typically operates on virtual addresses without detailed knowledge of the physical memory. The compiler relies upon an operating system and underlying hardware to map virtual memory to physical memory; however, in deciding physical data mapping, the operating system and hardware are not typically aware of the specific needs of the application program. As a result, the selected physical data mapping may not be optimal, which can result in greater execution latency and reduced overall computer system performance.